home *** CD-ROM | disk | FTP | other *** search
Text File | 1999-03-04 | 4.8 KB | 194 lines | [TEXT/ToyS] |
- -- User setable properties
- property kasAllowAlerts : true -- Set to false to stop any alerts from appearing
- property kasServerAlerts : true -- Set to false to stop warnings about missed servers
- property kasFinder : "Finder" -- name of application to open RemoteLaunchers
- property kasAppendage : " ->" -- Appended to file name if we can't use original
-
- -- Internal/User setable globals
- property kasLinkNeed : false
- property kasLinkUserDft : "CasaVision" -- Our friend on all machines
- property kasLinkPassDft : "" -- Our friend's password on all machines
-
- global gasLinkSet -- Has the friend been looked up?
- global gasLinkUser -- Used to connect (KeyChain Lookup)
- global gasLinkPass
-
- -- Internal globals
- global gasOurZone -- Set to zone of gasOurAlias
- global gasOurServer -- Set to server of gasOurAlias
- global gasOurVol -- Name of volume alias resides on
- global gasOurAlias -- The alias we own
- global gasOurName -- Name of original alias
-
-
- on open fsObjs
- set gasLinkSet to false
-
- repeat with fsObj in fsObjs
- OpenOne(fsObj)
- end repeat
- end open
-
-
- on OpenOne(fsObj)
- set aInfo to alias info from fsObj
-
- set gasOurZone to alias zone of aInfo
- set gasOurServer to alias server of aInfo
- set gasOurVol to alias volume of aInfo
- GetFriend(false)
-
- RemoteOpen(fsObj)
- end OpenOne
-
-
- on RemoteOpen(fileAlias)
- talk as user gasLinkUser ¬
- with password gasLinkPass ¬
- on server gasOurServer ¬
- in AppleTalk zone gasOurZone
-
- try
- -- Don't wait for a response, assume the aliases are correct
- tell application kasFinder of machine gasOurServer ¬
- of zone gasOurZone to open fileAlias
- on error err
- if (kasServerAlerts) then
- ShowConnectAlert(kasFinder, err)
- else
- beep
- end if
- end try
- end RemoteOpen
-
-
- on GetFriend(override) -- Should later use some modifier key to override?!?
- GetOneFriend(override)
- end GetFriend
-
-
- on GetOneFriend(override)
- set isLink to true -- Only linking in this script!
- set userMode to "linking"
- set passButtons to {"Cancel", "OK"}
- set passButton to 2
-
- if (gasLinkSet) then
- set defUser to gasLinkUser
- set defPass to gasLinkPass
- else
- set defUser to kasLinkUserDft
- set defPass to kasLinkPassDft
- end if
-
- set usrPwd to KeyChainLookUp(gasOurZone, gasOurServer, isLink)
-
- if (override or usrPwd is {}) then
- set chosen to display dialog ¬
- "Enter the friendly " & userMode & ¬
- " user's name…" default answer defUser ¬
- default button 2 with icon note
-
- if (the button returned of chosen is "OK") then
- set defUser to the text returned of chosen
- else
- return
- end if
-
- set chosen to display dialog ¬
- "Enter the friendly " & userMode & ¬
- " user's password…" buttons passButtons ¬
- default answer defPass default button passButton with icon note
-
- if (the button returned of chosen is not "Cancel") then
- set defPass to the text returned of chosen
- else
- return
- end if
-
- -- Save encrypted user/pass for future access
- KeyChainSave(gasOurZone, gasOurServer, isLink, defUser, defPass, "")
- else
- set defUser to item 1 of usrPwd
- set defPass to item 2 of usrPwd
- end if
-
- set gasLinkSet to true
- set gasLinkUser to defUser
- set gasLinkPass to defPass
- end GetOneFriend
-
-
- on PutAwayVol(volName)
- -- Volume
- try
- tell application "Finder" to put away item named volName
- on error
- beep
- end try
- end PutAwayVol
-
-
- on IsVolMounted(volName)
- -- Volume
- try
- set x to (volName & ":") as alias
- return true
- on error
- return false
- end try
- end IsVolMounted
-
-
- on ShowMountAlert()
- ShowServerAlert("Couldn't mount volume " & gasOurVol & ¬
- " from " & gasOurServer ¬
- & " in zone " & gasOurZone)
- end ShowMountAlert
-
-
- on ShowConnectAlert(appName, msg)
- ShowServerAlert("Couldn't connect to " & appName & " on " & ¬
- gasOurServer & " in zone " & gasOurZone & return & return & ¬
- "(" & msg & ")")
- end ShowConnectAlert
-
-
- on ShowServerAlert(msg)
- set choice to ¬
- display dialog msg buttons {"Reenter Password", "OK"} ¬
- default button 2 with icon stop
-
- if (button returned of choice is not "OK") then GetFriend(true)
- end ShowServerAlert
-
-
- property kasKeyChainPassword : "PowerScript" -- Encrypt stored data with this
- property kasPrefsFileName : "PowerScript Prefs" -- File name in <Preferences>
-
- on KeyChainLookUp(zoneName, serverName, isLinking)
- set prefOwner to "πSRV"
- if (isLinking) then set prefOwner to "πLNK"
-
- try
- set myKeyData to load preference named (zoneName & ":" & serverName) ¬
- of type prefOwner in file named kasPrefsFileName
- on error
- return {}
- end try
-
- return (encrypt the data myKeyData with password kasKeyChainPassword)
- end KeyChainLookUp
-
-
- on KeyChainSave(zoneName, serverName, isLinking, usr, pwd, ntPwd)
- set myKey to encrypt the data {usr, pwd, ntPwd} with password kasKeyChainPassword
-
- set prefOwner to "πSRV"
- if (isLinking) then set prefOwner to "πLNK"
-
- save preference myKey named (zoneName & ":" & serverName) ¬
- of type prefOwner ¬
- in file named kasPrefsFileName
- end KeyChainSave
-